/**
 * @file simplelock.h
 */
#ifndef COMMON_SIMPLELOCK_H_
#define COMMON_SIMPLELOCK_H_

#if defined _WIN32
#include <windows.h>
#else// !_WIN32
#include <pthread.h>
#endif// #if defined _WIN32

namespace thread {

/**
 * @class SimpleLock
 *
 * 基于 pthread_mutex_t 的简单封装，应该配合模板类 ::yy::utility::AutoDone 使用。
 */
class SimpleLock
{
public:
  SimpleLock();
  ~SimpleLock();
  
  /**
   * 进入代码保护区。
   */
  void Lock();
  /**
   * 离开代码保护区。
   */
  void Unlock();
  
private:
#if defined _WIN32
  CRITICAL_SECTION cs_;
#else// !_WIN32
  pthread_mutex_t mutex_;
#endif// #if defined _WIN32
};

}

#endif// YY_COMMON_CONCURRENCY_SIMPLELOCK_H_

